import Vue from 'vue'
import axios from "axios";
import store from '@/store'
import {Notification,MessageBox} from 'element-ui'
const apiBaseUrl =process.env.NODE_ENV=='development'?'':window.XLBaseUrl;  //这个用自己上线的实际地址
const uploadBaseUrl =window.XLBaseUrl;
// 创建 axios 实例
const service = axios.create({
  baseURL: apiBaseUrl, // api base_urlq
  timeout: 9000 // 请求超时时间
})

const err = (error) => {
  if (error.response) {
    let that=this;
    let data = error.response.data

    let token = sessionStorage.getItem('fkmsToken');
    switch (error.response.status) {
      case 403:
        Notification.error({ title: '系统提示', message: '拒绝访问',})
        break
      case 500:
        if(data.message=="Token失效，请重新登录"){
          MessageBox.alert('很抱歉，登录已过期，请重新登录', '登录已过期', {
            confirmButtonText: '确定',
            callback: action => {
              // 登陆过期  退回 登陆页面
            }
          });

        }else{
          Notification.error({ title: '系统提示', message:data.message})
        }
        break
      case 404:
        Notification.error({ title: '系统提示', message:'很抱歉，资源未找到!'})
        break
      case 504:
        Notification.error({ title: '系统提示', message: '网络超时'})
        break
      case 401:
        Notification.error({ title: '系统提示', message:'未授权，请重新登录'})
        if (token) {
          //退出登陆
          // 登陆过期  退回 登陆页面
          store.dispatch('Logout').then(() => {
            window.location.reload();
            window.location.href('/login');

          })
        }
        break
      default:
        Notification.error({
          title: '系统提示',
          message: data.message,
        })
        break
    }
  }
  return Promise.reject(error)
};

// request interceptor
service.interceptors.request.use(config => {
  // console.log(config,'configconfig')
  const token = sessionStorage.getItem('fyToken'); //获取token
  if (token) {
    config.headers[ 'Authorization' ] = "Bearer "+token // 让每个请求携带自定义 token 请根据实际情况自行修改
  }
  // if(config.method=='get'){
  //     config.params = {
  //       ...config.params
  //     }
  // }
  // if(config.method=='post'){ 
    
  //     config.data = {
  //       ...config.data
  //     }
  
  // }
  // if(config.method=='put'){
  //   config.data = {
  //     updateTime: new Date().getTime()+8*60*60*1000,
  //     updateUser: JSON.parse(sessionStorage.getItem('userInfo')).username,
  //     ...config.data
  //   }
  // }
  return config
},(error) => {
  return Promise.reject(error)
})

// response interceptor
service.interceptors.response.use((response) => {
  let that=this;
     if(response.data.code===700){
       MessageBox.alert(response.data.message, '验证失效', {
         confirmButtonText: '确定',
         callback: action => {
           // 登陆过期  退回 登陆页面
           store.dispatch('Logout').then(() => {
                 window.location.reload();
                 window.location.href('/login');

           })
         }
       });
       return Promise.reject(response.data)
     }
     return response.data;
}, err)



export {
  service as axios,
  apiBaseUrl,
    uploadBaseUrl
}
